<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
// 变量提升：使用var 声明的变量 ，将变量的声明，提升到它所在作用域顶部
        console.log(a);
        var a;    //声明  
        a = 1;    //赋值

        //console.log(b) //报错，没有变量提升
        let b;
        b = 2;


//块级作用域
        var c = 1; //全局变量 -- 全局作用域
        function fn1() {
            var d = 2; // 函数内 -- 函数作用域-局部
        }

        // { 代码块 } 
        // var 没有块级作用域
        // 换成 let 看看
        for (var i = 0; i < 5; i++) {

        }
        // 用var 声明的循环变量，会暴露出全局变量，变量的值是 ===循环的终止条件
        console.log(i);



// 暂时性死区 
        function fn3() {
            console.log(a); //let 声明之前 使用，报错，代码不能向下执行，暂时性死区
            var a = 1;   // 换成 let 看看  
            console.log(1);
        }
        // fn3();

// 是否为 window 属性
        var s = 1111; //换成 let 看看  
        console.log(window);
        console.log(window.s);







    </script>
</body>

</html>